<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 更好的理解代码的运行 
        // 面试的时候能够说出来   


        // 只能是声明式的函数  
        // function test(){}

        // var 变量   
        // 赋值式的函数 跟var 关键字 是一样的 
        
        

        // 1 var 变量 
        //  对变量 提前声明 但是不赋值  
        // 2 声明式的函数  
            // 对函数名提前进行声明  并且赋值给了函数  



        // var num = 100;
        // console.log(num);

        /* 打开浏览器 */

        // var num = 100;
        // console.log(num);


        /*预解析  */
        // 第一行 需要解析  告诉浏览器 这里声明一个num的变量 
        // 但是不赋值  var num 
        // 第二行 console.log(num)不需要解析 


        /* 执行  */
        // num = 100; 对num 进行赋值 
        // 输出到控制台 

        /* console.log(num); // undefined 
        var num = 100;
        console.log(num); */  // 100

        /* 预解析  */

        // 第一行不需要 
        // 第二行需要 var num 声明一个变量 但是不赋值 
        // 第三行不需要 


        /* 执行  */
        //1.console.log(num)
        // 因为在预解析的时候我们已经声明了num变量 但是
        //没有赋值 所以这里打印 undefined  

        //2. num = 100 

        // 3 .将100输出到控制台 

        /* console.log(num); // undefined 
        var num = 100;
        console.log(num);


        var num;
        console.log(num);
        num = 100;
        console.log(num); */



    </script>
</body>
</html>